package cn.tedu.tickets;
/**/
public class TestRunnable {
    public static void main(String[] args) {
        TicketRunnable t=new TicketRunnable();

        Thread t1=new Thread(t);
        Thread t2=new Thread(t);
        Thread t3=new Thread(t);
        Thread t4=new Thread(t);
        t1.start();
        t2.start();
        t3.start();
        t4.start();


    }
}
class TicketRunnable implements Runnable{
    /*由于自定义类对象作为唯一的业务对象,只new了一次
    * 所以发布的任务,也就是票数天然的会被所有线程对象共享,无需设置为静态也只有一份*/
    int ticket=100;
    @Override
    public void run() {
        while (true){
            try {
                /*让每个线程经历休眠,增加线程状态切换与出错的频率,产生了问题:
                * 问题1:产生了重卖的现象,同一张票卖给多个人
                * 问题2:产生了超卖的现象,超出规定的票数,出现了0,-1,-2这样的票*/
                Thread.sleep(10);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            System.out.println(TicketsThread.currentThread().getName()+"="+ticket--);
            if(ticket==0)break;
        }
    }
}